{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from datetime import datetime\n",
    "from influxdb import InfluxDBClient\n",
    "import talib as  ta\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "from matplotlib.dates import DateFormatter, \\\n",
    "WeekdayLocator, DayLocator, MONDAY, date2num\n",
    "from datetime import datetime\n",
    "\n",
    "from mpl_finance import candlestick_ohlc\n",
    "from matplotlib import pyplot as plt\n",
    "from mpl_finance import candlestick_ohlc\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "client = InfluxDBClient('192.168.3.108',8086)\n",
    "\n",
    "dbname = \"KlineIndex\"\n",
    "sqlday = \"select * from KlineDay where symbol='HSI' and  time > '2018-01-01 00:00:00'\"\n",
    "\n",
    "rsday = client.query(sqlday, database=dbname)\n",
    "query = rsday.get_points()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>vol</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-04 00:00:00+00:00</th>\n",
       "      <td>2010-01-04T00:00:00Z</td>\n",
       "      <td>21823.28</td>\n",
       "      <td>22024.83</td>\n",
       "      <td>21689.22</td>\n",
       "      <td>21860.04</td>\n",
       "      <td>21872.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>0.0</td>\n",
       "      <td>48509170000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-05 00:00:00+00:00</th>\n",
       "      <td>2010-01-05T00:00:00Z</td>\n",
       "      <td>22279.58</td>\n",
       "      <td>22297.04</td>\n",
       "      <td>21987.27</td>\n",
       "      <td>22092.15</td>\n",
       "      <td>21823.28</td>\n",
       "      <td>HSI</td>\n",
       "      <td>0.0</td>\n",
       "      <td>82973500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-06 00:00:00+00:00</th>\n",
       "      <td>2010-01-06T00:00:00Z</td>\n",
       "      <td>22416.67</td>\n",
       "      <td>22514.79</td>\n",
       "      <td>22277.13</td>\n",
       "      <td>22357.46</td>\n",
       "      <td>22279.58</td>\n",
       "      <td>HSI</td>\n",
       "      <td>0.0</td>\n",
       "      <td>91328340000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-07 00:00:00+00:00</th>\n",
       "      <td>2010-01-07T00:00:00Z</td>\n",
       "      <td>22269.45</td>\n",
       "      <td>22548.03</td>\n",
       "      <td>22169.61</td>\n",
       "      <td>22548.03</td>\n",
       "      <td>22416.67</td>\n",
       "      <td>HSI</td>\n",
       "      <td>0.0</td>\n",
       "      <td>79167640000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-08 00:00:00+00:00</th>\n",
       "      <td>2010-01-08T00:00:00Z</td>\n",
       "      <td>22296.75</td>\n",
       "      <td>22443.22</td>\n",
       "      <td>22206.16</td>\n",
       "      <td>22282.75</td>\n",
       "      <td>22269.45</td>\n",
       "      <td>HSI</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71931720000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           Date     close      high       low  \\\n",
       "Date                                                                            \n",
       "2010-01-04 00:00:00+00:00  2010-01-04T00:00:00Z  21823.28  22024.83  21689.22   \n",
       "2010-01-05 00:00:00+00:00  2010-01-05T00:00:00Z  22279.58  22297.04  21987.27   \n",
       "2010-01-06 00:00:00+00:00  2010-01-06T00:00:00Z  22416.67  22514.79  22277.13   \n",
       "2010-01-07 00:00:00+00:00  2010-01-07T00:00:00Z  22269.45  22548.03  22169.61   \n",
       "2010-01-08 00:00:00+00:00  2010-01-08T00:00:00Z  22296.75  22443.22  22206.16   \n",
       "\n",
       "                               open  preclose symbol  value          vol  \n",
       "Date                                                                      \n",
       "2010-01-04 00:00:00+00:00  21860.04  21872.50    HSI    0.0  48509170000  \n",
       "2010-01-05 00:00:00+00:00  22092.15  21823.28    HSI    0.0  82973500000  \n",
       "2010-01-06 00:00:00+00:00  22357.46  22279.58    HSI    0.0  91328340000  \n",
       "2010-01-07 00:00:00+00:00  22548.03  22416.67    HSI    0.0  79167640000  \n",
       "2010-01-08 00:00:00+00:00  22282.75  22269.45    HSI    0.0  71931720000  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_hsi = pd.DataFrame(query)\n",
    "df_hsi = df_hsi.rename(columns={'time':'Date'})\n",
    "df_hsi.index = pd.to_datetime(df_hsi['Date'], format=\"%Y-%m-%d\")\n",
    "df_hsi.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime64[ns, UTC]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_hsi.index.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def candlePlot(seriesData, title=\"a\"):\n",
    "    Date = [date2num(date) for date in seriesData.index]\n",
    "    seriesData.loc[:, 'Date'] = Date\n",
    "    \n",
    "    # 将DF转成list\n",
    "    listData = []\n",
    "    for i in range(len(seriesData)):\n",
    "        a = [seriesData.Date[i], \\\n",
    "            seriesData.open[i], seriesData.high[i],\\\n",
    "            seriesData.low[i], seriesData.close[i]]\n",
    "        listData.append(a)\n",
    "        \n",
    "    # 设定绘制参数\n",
    "    ax = plt.subplot()\n",
    "    mondays = WeekdayLocator(MONDAY)\n",
    "    weekFormatter = DateFormatter(\"%y %b %d\")\n",
    "    ax.xaxis.set_major_locator(mondays)\n",
    "    ax.xaxis.set_minor_locator(DayLocator())\n",
    "    ax.xaxis.set_major_formatter(weekFormatter)\n",
    "    \n",
    "    # 调用candlestick_oblc \n",
    "    candlestick_ohlc(ax, listData, width=0.7, \\\n",
    "                    colorup='r', colordown='g')\n",
    "    plt.setp(plt.gca().get_xticklabels(), \\\n",
    "                    rotation = 50, horizontalalignment='center')\n",
    "    return(plt.show())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n",
      "Locator attempting to generate 4955 ticks ([14388.0, ..., 19342.0]), which exceeds Locator.MAXTICKS (1000).\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "candlePlot(df_hsi, 'hsi')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "ClOp = df_hsi.close - df_hsi.open\n",
    "\n",
    "open = df_hsi.open\n",
    "close = df_hsi.close"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "Shape=[0,0,0]\n",
    "\n",
    "lag1ClOp = ClOp.shift(1)\n",
    "lag2ClOp = ClOp.shift(2)\n",
    "\n",
    "for i in range(3, len(ClOp)):\n",
    "    if all([lag2ClOp[i] < -11, abs(lag1ClOp[i])<2, \\\n",
    "           ClOp[i] > 6, abs(ClOp[i]) > abs(lag2ClOp[i] * 0.5)]):\n",
    "        Shape.append(1)\n",
    "    else:\n",
    "        Shape.append(0)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "412"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Shape.index(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "318"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 寻找十字星的位置\n",
    "lagOpen = open.shift(1)\n",
    "lagClose = close.shift(1)\n",
    "lag2Close = close.shift(2)\n",
    "\n",
    "Doji = [0,0,0]\n",
    "for i in range(3, len(open), 1):\n",
    "    if all([lagOpen[i] < open[i], lagOpen[i] < lag2Close[i], \\\n",
    "           lagClose[i] < open[i], (lagClose[i] < lag2Close[i])]):\n",
    "        Doji.append(1)\n",
    "    else:\n",
    "        Doji.append(0)\n",
    "Doji.count(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "11"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Doji.index(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 下跌趋势\n",
    "ret = close/close.shift(1) - 1\n",
    "lag1ret = ret.shift(1)\n",
    "lag2ret = ret.shift(2)\n",
    "\n",
    "\n",
    "Trend=[0,0,0]\n",
    "for i in range(3, len(ret)):\n",
    "    if all([lag1ret[i] < 0, lag2ret[i] < 0]):\n",
    "        Trend.append(1)\n",
    "    else:\n",
    "        Trend.append(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Trend.index(1)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "starSig = []\n",
    "for i in range(len(Trend)):\n",
    "    if all([Shape[i] == 1, Doji[i] == 1, Trend[i] == 1]):\n",
    "        starSig.append(1)\n",
    "    else:\n",
    "        starSig.append(0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2017-11-01 00:00:00+00:00\n",
      "2020-08-11 00:00:00+00:00\n"
     ]
    }
   ],
   "source": [
    "for i in range(len(starSig)):\n",
    "    if starSig[i] == 1:\n",
    "        print(df_hsi.index[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_2020 = df_hsi['2020-08-01':'2020-08-20']\n",
    "candlePlot(df_2020, '2020')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 乌云盖顶\n",
    "Close11 = df_hsi.close\n",
    "Open11 = df_hsi.open\n",
    "\n",
    "lagClose11 = Close11.shift(1)\n",
    "lagOpen11 = Open11.shift(1)\n",
    "\n",
    "Cloud = pd.Series(0, index=Close11.index)\n",
    "for i in range(1, len(Close11)):\n",
    "    if all([Close11[i] < Open11[i], \\\n",
    "            lagClose11[i] > lagOpen11[i], \\\n",
    "           Open11[i] > lagClose11[i], \\\n",
    "          Close11[i] < 0.5 * (lagClose11[i] + lagOpen11[i]), \\\n",
    "          Close11[i] > lagOpen11[i]]):\n",
    "        Cloud[i] = 1\n",
    "    else:\n",
    "        Cloud[i] = 0\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 前期上升趋势\n",
    "Trend = pd.Series(0, index=Close11.index)\n",
    "for i in range(2, len(Close11)):\n",
    "    if Close11[i - 1] > Close11[i - 2] > Close11[i - 3]:\n",
    "        Trend[i] = 1\n",
    "\n",
    "darkCloud = Cloud + Trend\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-09-08 00:00:00+00:00    2\n",
       "2012-02-06 00:00:00+00:00    2\n",
       "2012-03-14 00:00:00+00:00    2\n",
       "2012-06-28 00:00:00+00:00    2\n",
       "2012-11-20 00:00:00+00:00    2\n",
       "2013-01-11 00:00:00+00:00    2\n",
       "2013-07-02 00:00:00+00:00    2\n",
       "2013-07-12 00:00:00+00:00    2\n",
       "2014-02-13 00:00:00+00:00    2\n",
       "2014-06-30 00:00:00+00:00    2\n",
       "2014-08-14 00:00:00+00:00    2\n",
       "2014-12-23 00:00:00+00:00    2\n",
       "2015-04-23 00:00:00+00:00    2\n",
       "2016-05-11 00:00:00+00:00    2\n",
       "2017-01-12 00:00:00+00:00    2\n",
       "2017-09-19 00:00:00+00:00    2\n",
       "2017-12-12 00:00:00+00:00    2\n",
       "2018-01-15 00:00:00+00:00    2\n",
       "2018-03-21 00:00:00+00:00    2\n",
       "2018-08-10 00:00:00+00:00    2\n",
       "2019-01-17 00:00:00+00:00    2\n",
       "2019-03-13 00:00:00+00:00    2\n",
       "2019-11-26 00:00:00+00:00    2\n",
       "2020-02-13 00:00:00+00:00    2\n",
       "2020-03-26 00:00:00+00:00    2\n",
       "2020-07-30 00:00:00+00:00    2\n",
       "2021-07-14 00:00:00+00:00    2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "darkCloud[darkCloud == 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_2020 = df_hsi['2020-07-01':'2020-08-02']\n",
    "candlePlot(df_2020, '2020')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "trader",
   "language": "python",
   "name": "trader"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
